Skip to content

MkClassDiagram

Show source on GitHub

Node to display the class hierarchy of a class. Supports multiple modes.

Example: Baseclass diagram

Jinja

{{ _mk.MkClassDiagram | MkClassDiagram(mode="baseclasses") }}

Python

MkClassDiagram(klass=MkClassDiagram, mode='baseclasses', direction='TD')
graph TD
  94875594096432["mkclassdiagram.MkClassDiagram"]
  94875593528528["mkdiagram.MkDiagram"]
  94875593791856["mkcode.MkCode"]
  94875590900096["mkcontainer.MkContainer"]
  94875594508576["mknode.MkNode"]
  94875592833088["node.Node"]
  140216716431552["builtins.object"]
  94875593528528 --> 94875594096432
  94875593791856 --> 94875593528528
  94875590900096 --> 94875593791856
  94875594508576 --> 94875590900096
  94875592833088 --> 94875594508576
  140216716431552 --> 94875592833088
```` mermaid
graph TD
  94875594096432["mkclassdiagram.MkClassDiagram"]
  94875593528528["mkdiagram.MkDiagram"]
  94875593791856["mkcode.MkCode"]
  94875590900096["mkcontainer.MkContainer"]
  94875594508576["mknode.MkNode"]
  94875592833088["node.Node"]
  140216716431552["builtins.object"]
  94875593528528 --> 94875594096432
  94875593791856 --> 94875593528528
  94875590900096 --> 94875593791856
  94875594508576 --> 94875590900096
  94875592833088 --> 94875594508576
  140216716431552 --> 94875592833088
````
<pre class="mermaid"><code>graph TD
  94875594096432["mkclassdiagram.MkClassDiagram"]
  94875593528528["mkdiagram.MkDiagram"]
  94875593791856["mkcode.MkCode"]
  94875590900096["mkcontainer.MkContainer"]
  94875594508576["mknode.MkNode"]
  94875592833088["node.Node"]
  140216716431552["builtins.object"]
  94875593528528 --&gt; 94875594096432
  94875593791856 --&gt; 94875593528528
  94875590900096 --&gt; 94875593791856
  94875594508576 --&gt; 94875590900096
  94875592833088 --&gt; 94875594508576
  140216716431552 --&gt; 94875592833088</code></pre>

Example: Subclass diagram

Jinja

{{ _mk.MkContainer | MkClassDiagram(mode="subclasses", direction="LR") }}

Python

MkClassDiagram(klass=MkContainer, mode='subclasses', direction='LR')
graph LR
  94875590900096["mkcontainer.MkContainer"]
  94875590901088["mkblock.MkBlock"]
  94875592467872["mkhtmlblock.MkHtmlBlock"]
  94875593124432["mkdetailsblock.MkDetailsBlock"]
  94875594611152["mktabs.MkTabBlock"]
  94875593125424["mkadmonition.MkAdmonition"]
  94875593126416["mkblockquote.MkBlockQuote"]
  94875593791856["mkcode.MkCode"]
  94875593528528["mkdiagram.MkDiagram"]
  94875594096432["mkclassdiagram.MkClassDiagram"]
  94875593403936["mkpipdeptree.MkPipDepTree"]
  94875593394720["mktreeview.MkTreeView"]
  94875592700464["mktemplate.MkTemplate"]
  94875593077824["mkclidoc.MkCliDoc"]
  94875593510096["mkmaterialbadge.MkMaterialBadge"]
  94875593659616["mkimagecompare.MkImageCompare"]
  94875593663728["mkimageslideshow.MkImageSlideshow"]
  94875593068272["mkiframe.MkIFrame"]
  94875590125488["mkcard.MkCard"]
  94875592689456["mkinstallguide.MkInstallGuide"]
  94875594302832["mkcodeofconduct.MkCodeOfConduct"]
  94875594298720["mkcommitconventions.MkCommitConventions"]
  94875594477520["mkpullrequestguidelines.MkPullRequestGuidelines"]
  94875593773680["mkdevenvsetup.MkDevEnvSetup"]
  94875593778576["mkdevtools.MkDevTools"]
  94875594101552["mkreprrawrendered.MkReprRawRendered"]
  94875593935504["mkcommandoutput.MkCommandOutput"]
  94875594293872["mkcommentedcode.MkCommentedCode"]
  94875594734320["mkconfigsetting.MkConfigSetting"]
  94875593928256["mkpluginflow.MkPluginFlow"]
  94875593514080["mklist.MkList"]
  94875593531088["mkbasetable.MkBaseTable"]
  94875594609376["mktable.MkTable"]
  94875592865136["mkhtmltable.MkHtmlTable"]
  94875594612144["mktabs.MkTab"]
  94875592265120["mktabcontainer.MkTabContainer"]
  94875592266896["mktabbedblocks.MkTabbedBlocks"]
  94875592269712["mktabbed.MkTabbed"]
  94875593444560["mkcritic.MkCritic"]
  94875593445552["mkannotations.MkAnnotation"]
  94875590120592["mkannotations.MkAnnotations"]
  94875592268672["mkfootnotes.MkFootNote"]
  94875590123920["mkfootnotes.MkFootNotes"]
  94875593071040["mkdefinitionlist.MkDefinition"]
  94875593072032["mkdefinitionlist.MkDefinitionList"]
  94875593324032["mkpage.MkPage"]
  94875592382352["mktemplatepage.MkTemplatePage"]
  94875594603984["mkclasspage.MkClassPage"]
  94875592380960["mkmodulepage.MkModulePage"]
  94875593326592["mkshowcase.MkShowcase"]
  94875592912592["mkspeechbubble.MkSpeechBubble"]
  94875592918480["mktasklist.MkTask"]
  94875592914368["mktasklist.MkTaskList"]
  94875594635696["mktimeline.MkTimeline"]
  94875593585968["mkshields.MkShields"]
  94875593933728["mkmetadatabadges.MkMetadataBadges"]
  94875590900096 --> 94875590901088
  94875590901088 --> 94875592467872
  94875590901088 --> 94875593124432
  94875590901088 --> 94875594611152
  94875590900096 --> 94875593125424
  94875590900096 --> 94875593126416
  94875590900096 --> 94875593791856
  94875593791856 --> 94875593528528
  94875593528528 --> 94875594096432
  94875593528528 --> 94875593403936
  94875593791856 --> 94875593394720
  94875590900096 --> 94875592700464
  94875592700464 --> 94875593077824
  94875592700464 --> 94875593510096
  94875592700464 --> 94875593659616
  94875592700464 --> 94875593663728
  94875592700464 --> 94875593068272
  94875592700464 --> 94875590125488
  94875592700464 --> 94875592689456
  94875592700464 --> 94875594302832
  94875592700464 --> 94875594298720
  94875592700464 --> 94875594477520
  94875592700464 --> 94875593773680
  94875592700464 --> 94875593778576
  94875592700464 --> 94875594101552
  94875592700464 --> 94875593935504
  94875592700464 --> 94875594293872
  94875592700464 --> 94875594734320
  94875592700464 --> 94875593928256
  94875590900096 --> 94875593514080
  94875590900096 --> 94875593531088
  94875593531088 --> 94875594609376
  94875593531088 --> 94875592865136
  94875590900096 --> 94875594612144
  94875590900096 --> 94875592265120
  94875592265120 --> 94875592266896
  94875592265120 --> 94875592269712
  94875590900096 --> 94875593444560
  94875590900096 --> 94875593445552
  94875590900096 --> 94875590120592
  94875590900096 --> 94875592268672
  94875590900096 --> 94875590123920
  94875590900096 --> 94875593071040
  94875590900096 --> 94875593072032
  94875590900096 --> 94875593324032
  94875593324032 --> 94875592382352
  94875592382352 --> 94875594603984
  94875592382352 --> 94875592380960
  94875590900096 --> 94875593326592
  94875590900096 --> 94875592912592
  94875590900096 --> 94875592918480
  94875590900096 --> 94875592914368
  94875590900096 --> 94875594635696
  94875590900096 --> 94875593585968
  94875590900096 --> 94875593933728
```` mermaid
graph LR
  94875590900096["mkcontainer.MkContainer"]
  94875590901088["mkblock.MkBlock"]
  94875592467872["mkhtmlblock.MkHtmlBlock"]
  94875593124432["mkdetailsblock.MkDetailsBlock"]
  94875594611152["mktabs.MkTabBlock"]
  94875593125424["mkadmonition.MkAdmonition"]
  94875593126416["mkblockquote.MkBlockQuote"]
  94875593791856["mkcode.MkCode"]
  94875593528528["mkdiagram.MkDiagram"]
  94875594096432["mkclassdiagram.MkClassDiagram"]
  94875593403936["mkpipdeptree.MkPipDepTree"]
  94875593394720["mktreeview.MkTreeView"]
  94875592700464["mktemplate.MkTemplate"]
  94875593077824["mkclidoc.MkCliDoc"]
  94875593510096["mkmaterialbadge.MkMaterialBadge"]
  94875593659616["mkimagecompare.MkImageCompare"]
  94875593663728["mkimageslideshow.MkImageSlideshow"]
  94875593068272["mkiframe.MkIFrame"]
  94875590125488["mkcard.MkCard"]
  94875592689456["mkinstallguide.MkInstallGuide"]
  94875594302832["mkcodeofconduct.MkCodeOfConduct"]
  94875594298720["mkcommitconventions.MkCommitConventions"]
  94875594477520["mkpullrequestguidelines.MkPullRequestGuidelines"]
  94875593773680["mkdevenvsetup.MkDevEnvSetup"]
  94875593778576["mkdevtools.MkDevTools"]
  94875594101552["mkreprrawrendered.MkReprRawRendered"]
  94875593935504["mkcommandoutput.MkCommandOutput"]
  94875594293872["mkcommentedcode.MkCommentedCode"]
  94875594734320["mkconfigsetting.MkConfigSetting"]
  94875593928256["mkpluginflow.MkPluginFlow"]
  94875593514080["mklist.MkList"]
  94875593531088["mkbasetable.MkBaseTable"]
  94875594609376["mktable.MkTable"]
  94875592865136["mkhtmltable.MkHtmlTable"]
  94875594612144["mktabs.MkTab"]
  94875592265120["mktabcontainer.MkTabContainer"]
  94875592266896["mktabbedblocks.MkTabbedBlocks"]
  94875592269712["mktabbed.MkTabbed"]
  94875593444560["mkcritic.MkCritic"]
  94875593445552["mkannotations.MkAnnotation"]
  94875590120592["mkannotations.MkAnnotations"]
  94875592268672["mkfootnotes.MkFootNote"]
  94875590123920["mkfootnotes.MkFootNotes"]
  94875593071040["mkdefinitionlist.MkDefinition"]
  94875593072032["mkdefinitionlist.MkDefinitionList"]
  94875593324032["mkpage.MkPage"]
  94875592382352["mktemplatepage.MkTemplatePage"]
  94875594603984["mkclasspage.MkClassPage"]
  94875592380960["mkmodulepage.MkModulePage"]
  94875593326592["mkshowcase.MkShowcase"]
  94875592912592["mkspeechbubble.MkSpeechBubble"]
  94875592918480["mktasklist.MkTask"]
  94875592914368["mktasklist.MkTaskList"]
  94875594635696["mktimeline.MkTimeline"]
  94875593585968["mkshields.MkShields"]
  94875593933728["mkmetadatabadges.MkMetadataBadges"]
  94875590900096 --> 94875590901088
  94875590901088 --> 94875592467872
  94875590901088 --> 94875593124432
  94875590901088 --> 94875594611152
  94875590900096 --> 94875593125424
  94875590900096 --> 94875593126416
  94875590900096 --> 94875593791856
  94875593791856 --> 94875593528528
  94875593528528 --> 94875594096432
  94875593528528 --> 94875593403936
  94875593791856 --> 94875593394720
  94875590900096 --> 94875592700464
  94875592700464 --> 94875593077824
  94875592700464 --> 94875593510096
  94875592700464 --> 94875593659616
  94875592700464 --> 94875593663728
  94875592700464 --> 94875593068272
  94875592700464 --> 94875590125488
  94875592700464 --> 94875592689456
  94875592700464 --> 94875594302832
  94875592700464 --> 94875594298720
  94875592700464 --> 94875594477520
  94875592700464 --> 94875593773680
  94875592700464 --> 94875593778576
  94875592700464 --> 94875594101552
  94875592700464 --> 94875593935504
  94875592700464 --> 94875594293872
  94875592700464 --> 94875594734320
  94875592700464 --> 94875593928256
  94875590900096 --> 94875593514080
  94875590900096 --> 94875593531088
  94875593531088 --> 94875594609376
  94875593531088 --> 94875592865136
  94875590900096 --> 94875594612144
  94875590900096 --> 94875592265120
  94875592265120 --> 94875592266896
  94875592265120 --> 94875592269712
  94875590900096 --> 94875593444560
  94875590900096 --> 94875593445552
  94875590900096 --> 94875590120592
  94875590900096 --> 94875592268672
  94875590900096 --> 94875590123920
  94875590900096 --> 94875593071040
  94875590900096 --> 94875593072032
  94875590900096 --> 94875593324032
  94875593324032 --> 94875592382352
  94875592382352 --> 94875594603984
  94875592382352 --> 94875592380960
  94875590900096 --> 94875593326592
  94875590900096 --> 94875592912592
  94875590900096 --> 94875592918480
  94875590900096 --> 94875592914368
  94875590900096 --> 94875594635696
  94875590900096 --> 94875593585968
  94875590900096 --> 94875593933728
````
<pre class="mermaid"><code>graph LR
  94875590900096["mkcontainer.MkContainer"]
  94875590901088["mkblock.MkBlock"]
  94875592467872["mkhtmlblock.MkHtmlBlock"]
  94875593124432["mkdetailsblock.MkDetailsBlock"]
  94875594611152["mktabs.MkTabBlock"]
  94875593125424["mkadmonition.MkAdmonition"]
  94875593126416["mkblockquote.MkBlockQuote"]
  94875593791856["mkcode.MkCode"]
  94875593528528["mkdiagram.MkDiagram"]
  94875594096432["mkclassdiagram.MkClassDiagram"]
  94875593403936["mkpipdeptree.MkPipDepTree"]
  94875593394720["mktreeview.MkTreeView"]
  94875592700464["mktemplate.MkTemplate"]
  94875593077824["mkclidoc.MkCliDoc"]
  94875593510096["mkmaterialbadge.MkMaterialBadge"]
  94875593659616["mkimagecompare.MkImageCompare"]
  94875593663728["mkimageslideshow.MkImageSlideshow"]
  94875593068272["mkiframe.MkIFrame"]
  94875590125488["mkcard.MkCard"]
  94875592689456["mkinstallguide.MkInstallGuide"]
  94875594302832["mkcodeofconduct.MkCodeOfConduct"]
  94875594298720["mkcommitconventions.MkCommitConventions"]
  94875594477520["mkpullrequestguidelines.MkPullRequestGuidelines"]
  94875593773680["mkdevenvsetup.MkDevEnvSetup"]
  94875593778576["mkdevtools.MkDevTools"]
  94875594101552["mkreprrawrendered.MkReprRawRendered"]
  94875593935504["mkcommandoutput.MkCommandOutput"]
  94875594293872["mkcommentedcode.MkCommentedCode"]
  94875594734320["mkconfigsetting.MkConfigSetting"]
  94875593928256["mkpluginflow.MkPluginFlow"]
  94875593514080["mklist.MkList"]
  94875593531088["mkbasetable.MkBaseTable"]
  94875594609376["mktable.MkTable"]
  94875592865136["mkhtmltable.MkHtmlTable"]
  94875594612144["mktabs.MkTab"]
  94875592265120["mktabcontainer.MkTabContainer"]
  94875592266896["mktabbedblocks.MkTabbedBlocks"]
  94875592269712["mktabbed.MkTabbed"]
  94875593444560["mkcritic.MkCritic"]
  94875593445552["mkannotations.MkAnnotation"]
  94875590120592["mkannotations.MkAnnotations"]
  94875592268672["mkfootnotes.MkFootNote"]
  94875590123920["mkfootnotes.MkFootNotes"]
  94875593071040["mkdefinitionlist.MkDefinition"]
  94875593072032["mkdefinitionlist.MkDefinitionList"]
  94875593324032["mkpage.MkPage"]
  94875592382352["mktemplatepage.MkTemplatePage"]
  94875594603984["mkclasspage.MkClassPage"]
  94875592380960["mkmodulepage.MkModulePage"]
  94875593326592["mkshowcase.MkShowcase"]
  94875592912592["mkspeechbubble.MkSpeechBubble"]
  94875592918480["mktasklist.MkTask"]
  94875592914368["mktasklist.MkTaskList"]
  94875594635696["mktimeline.MkTimeline"]
  94875593585968["mkshields.MkShields"]
  94875593933728["mkmetadatabadges.MkMetadataBadges"]
  94875590900096 --&gt; 94875590901088
  94875590901088 --&gt; 94875592467872
  94875590901088 --&gt; 94875593124432
  94875590901088 --&gt; 94875594611152
  94875590900096 --&gt; 94875593125424
  94875590900096 --&gt; 94875593126416
  94875590900096 --&gt; 94875593791856
  94875593791856 --&gt; 94875593528528
  94875593528528 --&gt; 94875594096432
  94875593528528 --&gt; 94875593403936
  94875593791856 --&gt; 94875593394720
  94875590900096 --&gt; 94875592700464
  94875592700464 --&gt; 94875593077824
  94875592700464 --&gt; 94875593510096
  94875592700464 --&gt; 94875593659616
  94875592700464 --&gt; 94875593663728
  94875592700464 --&gt; 94875593068272
  94875592700464 --&gt; 94875590125488
  94875592700464 --&gt; 94875592689456
  94875592700464 --&gt; 94875594302832
  94875592700464 --&gt; 94875594298720
  94875592700464 --&gt; 94875594477520
  94875592700464 --&gt; 94875593773680
  94875592700464 --&gt; 94875593778576
  94875592700464 --&gt; 94875594101552
  94875592700464 --&gt; 94875593935504
  94875592700464 --&gt; 94875594293872
  94875592700464 --&gt; 94875594734320
  94875592700464 --&gt; 94875593928256
  94875590900096 --&gt; 94875593514080
  94875590900096 --&gt; 94875593531088
  94875593531088 --&gt; 94875594609376
  94875593531088 --&gt; 94875592865136
  94875590900096 --&gt; 94875594612144
  94875590900096 --&gt; 94875592265120
  94875592265120 --&gt; 94875592266896
  94875592265120 --&gt; 94875592269712
  94875590900096 --&gt; 94875593444560
  94875590900096 --&gt; 94875593445552
  94875590900096 --&gt; 94875590120592
  94875590900096 --&gt; 94875592268672
  94875590900096 --&gt; 94875590123920
  94875590900096 --&gt; 94875593071040
  94875590900096 --&gt; 94875593072032
  94875590900096 --&gt; 94875593324032
  94875593324032 --&gt; 94875592382352
  94875592382352 --&gt; 94875594603984
  94875592382352 --&gt; 94875592380960
  94875590900096 --&gt; 94875593326592
  94875590900096 --&gt; 94875592912592
  94875590900096 --&gt; 94875592918480
  94875590900096 --&gt; 94875592914368
  94875590900096 --&gt; 94875594635696
  94875590900096 --&gt; 94875593585968
  94875590900096 --&gt; 94875593933728</code></pre>

Example: MRO diagram

Jinja

{{ _mk.MkTable | MkClassDiagram(mode="mro") }}

Python

MkClassDiagram(klass=MkTable, mode='mro', direction='TD')
graph TD
  94875594609376["mktable.MkTable"]
  94875593531088["mkbasetable.MkBaseTable"]
  94875590900096["mkcontainer.MkContainer"]
  94875594508576["mknode.MkNode"]
  94875592833088["node.Node"]
  140216716431552["builtins.object"]
  94875594609376 --> 94875593531088
  94875593531088 --> 94875590900096
  94875590900096 --> 94875594508576
  94875594508576 --> 94875592833088
  94875592833088 --> 140216716431552
```` mermaid
graph TD
  94875594609376["mktable.MkTable"]
  94875593531088["mkbasetable.MkBaseTable"]
  94875590900096["mkcontainer.MkContainer"]
  94875594508576["mknode.MkNode"]
  94875592833088["node.Node"]
  140216716431552["builtins.object"]
  94875594609376 --> 94875593531088
  94875593531088 --> 94875590900096
  94875590900096 --> 94875594508576
  94875594508576 --> 94875592833088
  94875592833088 --> 140216716431552
````
<pre class="mermaid"><code>graph TD
  94875594609376["mktable.MkTable"]
  94875593531088["mkbasetable.MkBaseTable"]
  94875590900096["mkcontainer.MkContainer"]
  94875594508576["mknode.MkNode"]
  94875592833088["node.Node"]
  140216716431552["builtins.object"]
  94875594609376 --&gt; 94875593531088
  94875593531088 --&gt; 94875590900096
  94875590900096 --&gt; 94875594508576
  94875594508576 --&gt; 94875592833088
  94875592833088 --&gt; 140216716431552</code></pre>

Bases: MkDiagram

__init__

__init__(
    klass: type | str | Class,
    mode: DiagramModeStr = "baseclasses",
    direction: Literal["TD", "DT", "LR", "RL"] = "TD",
    max_depth: int | None = None,
    **kwargs: Any
)

Parameters:

Name Type Description Default
klass type | str | Class

Klass to show a diagram for

required
mode DiagramModeStr

What kind of diagram to display

'baseclasses'
direction Literal['TD', 'DT', 'LR', 'RL']

diagram direction

'TD'
max_depth int | None

Maxium depth to display

None
kwargs Any

Keyword arguments passed to parent

{}
Name Children Inherits
MkDiagram
mknodes.basenodes.mkdiagram
Class representing a mermaid diagram.
graph TD
  94875594096432["mkclassdiagram.MkClassDiagram"]
  94875593528528["mkdiagram.MkDiagram"]
  94875593791856["mkcode.MkCode"]
  94875590900096["mkcontainer.MkContainer"]
  94875594508576["mknode.MkNode"]
  94875592833088["node.Node"]
  140216716431552["builtins.object"]
  94875593528528 --> 94875594096432
  94875593791856 --> 94875593528528
  94875590900096 --> 94875593791856
  94875594508576 --> 94875590900096
  94875592833088 --> 94875594508576
  140216716431552 --> 94875592833088
/home/runner/work/mknodes/mknodes/mknodes/templatenodes/mkclassdiagram/metadata.toml
[metadata]
icon = "mdi:graph-outline"
name = "MkClassDiagram"
group = "diagram"

[[requirements.extension."pymdownx.superfences".custom_fences]]
name = "mermaid"
class = "mermaid"
format = "pymdownx.superfences.fence_code_format"

[examples.baseclass_diagram]
title = "Baseclass diagram"
jinja = """
{{ _mk.MkClassDiagram | MkClassDiagram(mode="baseclasses") }}
"""

[examples.subclass_diagram]
title = "Subclass diagram"
jinja = """
{{ _mk.MkContainer | MkClassDiagram(mode="subclasses", direction="LR") }}
"""

[examples.mro_diagram]
title = "MRO diagram"
jinja = """
{{ _mk.MkTable | MkClassDiagram(mode="mro") }}
"""

[output.markdown]
template = """
{{ node.fence_boundary }} mermaid
graph {{ node.direction }}
{% for identifier, title in node.builder.items | zip(node.builder.titles) %}
  {{ identifier }}["{{ title }}"]
{% endfor %}
{% for a, b in node.builder.connections %}
  {{ a }} --> {{ b }}
{% endfor %}
{{ node.fence_boundary }}
"""
mknodes.templatenodes.mkclassdiagram.MkClassDiagram
class MkClassDiagram(mkdiagram.MkDiagram):
    """Node to display the class hierarchy of a class. Supports multiple modes."""

    def __init__(
        self,
        klass: type | str | griffe.Class,
        mode: DiagramModeStr = "baseclasses",
        direction: Literal["TD", "DT", "LR", "RL"] = "TD",
        max_depth: int | None = None,
        **kwargs: Any,
    ):
        """Constructor.

        Args:
            klass: Klass to show a diagram for
            mode: What kind of diagram to display
            direction: diagram direction
            max_depth: Maxium depth to display
            kwargs: Keyword arguments passed to parent
        """
        self.klass = klass
        self.mode = mode
        self._max_depth = max_depth
        super().__init__(direction=direction, **kwargs)

    def __repr__(self):
        return reprhelpers.get_repr(
            self,
            klass=self.klass,
            mode=self.mode,
            direction=self.direction,
        )

    @property
    def builder(self):
        klass = classhelpers.to_class(self.klass)
        match self.mode:
            case "subclasses":
                return SubclassConnector(klass, max_depth=self._max_depth)
            case "baseclasses":
                return ParentClassConnector(klass, max_depth=self._max_depth)
            case "mro":
                return MroConnector(klass, max_depth=self._max_depth)
            case _:
                raise ValueError(self.mode)

    @property
    def mermaid_code(self) -> str:
        return self.builder.get_graph_connection_text()